package com.chenfan.mcn.model.dto;

import com.chenfan.common.extension.validation.groups.Modify;
import com.chenfan.mcn.model.CalculationDevided;
import com.chenfan.mcn.model.ExcuteFeedback;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author tangwei
 * Date:     2021/1/27 17:30
 * Description: 执行单编辑
 */
@Data
public class ExcutionOrderUpdateDTO implements Serializable {

    private static final long serialVersionUID = 4408810749951118440L;

    /**
     * 执行单主键id
     */
    @NotNull(message = "执行单主键id不能为空", groups = {Modify.class})
    private Long id;

    /**
     * 执行单号
     */
    @NotBlank(message = "执行单号不能为空", groups = {Modify.class})
    private String excuteCode;

    /**
     * 执行人id
     */
    @NotNull(message = "执行人id不能为空", groups = {Modify.class})
    private Long excutorId;

    /**
     * 执行人名称
     */
    private String excutorName;

    /**
     * 客户id
     */
    @NotNull(message = "客户id不能为空", groups = {Modify.class})
    private Long customerId;
    /**
     * 客户编码
     */
    private String customerCode;


    /**
     * 本单分成比例
     */
    @NotNull(message = "本单分成比例不能为空")
    private BigDecimal dividedRate;

    /**
     * 红人分成备注
     */
    private String dividedRemark;
    /**
     * 合作内容（取自数据字典）
     */
    @NotBlank(message = "合作内容不能为空")
    private String cooperationContent;

    /**
     * 执行单总金额
     */
    @NotNull(message = "执行单总金额不能为空", groups = {Modify.class})
    private BigDecimal actualQuotedPrice;

    /**
     * 微任务金额
     */
    private BigDecimal microTaskAmount;

    /**
     * 粉丝头条金额
     */
    private BigDecimal fansHeadlineAmount;

    /**
     * 平台手续费
     */
    private BigDecimal platformFee;

    /**
     * 机酒差旅补贴（元）【之前是其他费用】
     */
    private BigDecimal otherFee;

    /**
     * 机酒差旅费用说明
     */
    private String specialFeeRemark;

    /**
     * 实际报价
     */
    private BigDecimal realAmount;

    /**
     * 是否平台报备
     */
    private Boolean platformReport;

    /**
     * 后端使用（单据状态）
     */
    private Integer approvalStatus;

    /**
     * 执行反馈
     */
    @Valid
    private ExcuteFeedback excuteFeedback;

    /**
     * 计算分成
     */
    @Valid
    private CalculationDevided calculationDevided;

    /**
     * 红人账户信息ID
     */
    private Long starAccountInfoId;

    /**
     * 统筹人id
     */
    private Long coordinatorId;

    /**
     * 统筹人名称
     */
    private String coordinatorName;

    /**
     * 部门负责人id
     */
    private Long departmentHeaderId;

    /**
     * 部门负责人名称
     */
    private String departmentHeaderName;

    /**
     * 附件-JSON字符串
     */
    private String attachmentFile;

    /**
     * 打款方式id
     */
    private Long accountId;

    /**
     * 打款方式
     */
    private String paidWay;

    /**
     * '1, "红人收款账户" 2, "客户收款账户" 3, "公司账户" 4, "第三方账户"',
     */
    private Integer accountType;

    /**
     * 开票方式(1=开票、3=后补票)',
     */
    private Integer customerInvoiceWay;

    /**
     * 账号是否入驻：0否1是
     */
    private Integer inSystemAdmin;

    /**
     * 年框合同编号
     */
    private String yearCode;

    /**
     * (开票信息)开票形式：0无需开票；1开票待定；2开票
     */
    private Integer invoiceForm;

    /**
     * (开票信息)开票抬头
     */
    private String invoiceTitle;

    /**
     * (开票信息)开票类型：普票；专票
     */
    private String invoiceType;

    /**
     * (开票信息)开票内容
     */
    private String invoiceContent;

    /**
     * 红人开票信息id
     */
    private Long starBillingHeaderId;
    /**
     * 结算方式
     */
    private String settlementMethod;
    /**
     * 结算形式(0-线上结算、1-线下结算)
     */
    private Integer settlementForm;

    /**
     * 品牌名称(数据字典)
     */
    @NotBlank(message = "品牌必选", groups = {Modify.class})
    private String brandName;

    /**
     * 产品名称
     */
    @NotBlank(message = "产品名称不能为空", groups = {Modify.class})
    private String productName;

    /**
     * 红人平台信息id
     */
    @NotNull(message = "红人平台信息id不能为空", groups = {Modify.class})
    private Long starPlatformInfoId;

    /**
     * 红人id
     */
    private Long starId;

    /**
     * 红人昵称
     */
    private String starNickName;

    /**
     * 刊例原价（元）
     */
    private BigDecimal cardRatePrice;
    /**
     * 其他加价收入（元）
     */
    private BigDecimal otherAmount;
    /**
     * 其他加价收入说明
     */
    private String otherAmountRemark;

    /**
     * 备注信息
     */
    private String remark;
    /**
     * 发布日期开始时间
     */
    @NotNull(message = "发布日期开始时间不能为空", groups = {Modify.class})
    private Date promisePublishDate;

    /**
     * 发布日期结束时间
     */
    @NotNull(message = "发布日期结束时间不能为空", groups = {Modify.class})
    private Date promisePublishDateEnd;
    /**
     * 发布形式
     */
    private String publishForm;

    /**
     * 是否挂车/橱窗/组件：0否1是
     */
    @NotNull(message = "是否挂车/橱窗/组件必选", groups = {Modify.class})
    private Integer haveLinkCommand;

    /**
     * 平台手续费/微任务金额（元）
     */
    private BigDecimal platformFeeAmount;

    /**
     * 其他补贴性收入（元）
     */
    private BigDecimal subsidyIncomeAmount;

    /**
     * 其他补贴性收入说明
     */
    private String subsidyIncomeRemark;
}